package cn.wh.user.dao;

import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.hibernate.HibernateException;
import org.hibernate.Query;
import org.hibernate.Session;
import org.springframework.orm.hibernate4.HibernateCallback;
import org.springframework.stereotype.Repository;

import cn.wh.common.Util.ConstantUtil;
import cn.wh.common.Util.PageInfoUtil;
import cn.wh.common.dao.BaseDaoImpl;
import cn.wh.user.pojo.AAdmin;

/**
 * 管理员的dao实现类
 */
@Repository("adminDao")
public class AAdminDaoImpl extends BaseDaoImpl<AAdmin> implements IAAdminDao
{

	// 查询一条管理员
	// condMap 从页面上传递过来的查询条件
	@Override
	public AAdmin getOne(Map<String, Object> condMap)
	{
		// hql语句
		StringBuffer hql = new StringBuffer();
		hql.append("from AAdmin ad where 1 = 1 ");     // 这里要写类的名称
		// hibernate要求的查询条件
		Map<String, Object> paramMap = new HashMap<String, Object>();
		// 按照id查询
		if (condMap.get("id") != null && !"".equals(condMap.get("id"))) {
			hql.append(" and ad.id = :id ");
			paramMap.put("id", Integer.valueOf(condMap.get("id") + ""));
		}
		// 按照email查询
		if (condMap.get("email") != null && !"".equals(condMap.get("email"))) {
			hql.append(" and ad.email = :email ");
			paramMap.put("email", condMap.get("email"));
		}
		
		// 排序
		if("createASC".equals(condMap.get("orderby") + ""))  {
			hql.append(" order by createDate asc ");
		} else {
			hql.append(" order by updateDate asc ");
		}
		//查询一条记录
		return this.returnGetOne(hql.toString(),paramMap);
	}

	// 查询多条管理员
	@Override
	public List<AAdmin> getList(Map<String, Object> condMap,PageInfoUtil pageInfoUtil)
	{
		// hql语句
		StringBuffer hql = new StringBuffer();
		hql.append("from AAdmin ad where 1 = 1 ");     // 这里要写类的名称
		// hibernate要求的查询条件
		Map<String, Object> paramMap = new HashMap<String, Object>();
		// 按照id查询
		/*if (condMap.get("id") != null && !"".equals(condMap.get("id"))) {
			hql.append(" and ad.id = :id ");
			paramMap.put("id", Integer.valueOf(condMap.get("id") + ""));
		}*/
		// 按照关键字搜索
		if (condMap.get("keyword") != null && !"".equals(condMap.get("keyword"))) {
			hql.append(" and (ad.email like :keyword or ad.trueName like :keyword or ad.phone like :keyword)");
			paramMap.put("keyword", "%" + condMap.get("keyword") + "%");
		}
		// 按照状态搜索
		if (condMap.get("status") != null && !"".equals(condMap.get("status"))) {
			hql.append(" and ad.status = :status ");
			paramMap.put("status", Byte.valueOf(condMap.get("status") + ""));
		}
		// 按照更新时间搜索
		if (condMap.get("startDate") instanceof Date &&condMap.get("endDate") instanceof Date ) {
			hql.append(" and ad.updateDate  >= :startDate and ad.updateDate < :endDate");
			paramMap.put("startDate", condMap.get("startDate") );
			paramMap.put("endDate", condMap.get("endDate") );
		}
		// 排序
		if("createASC".equals(condMap.get("orderby") + ""))  {
			hql.append(" order by createDate asc ");
		} else {
			hql.append(" order by updateDate asc ");
		}
		// 是否分页
		if (pageInfoUtil != null) {
			// 分页
			return this.returnGetListByPage(hql.toString(), paramMap, pageInfoUtil);
		} else {
			// 不分页
			return returnGetListNoPage(hql.toString(), paramMap);
		}
		
		// 返回一个空集合
		//return Collections.emptyList();
	}
}
